package com.lin.cloud.disk.manage;

import com.lin.cloud.disk.common.entity.request.AccountRequestDTO;
import com.lin.cloud.disk.entity.pojo.Department;
import com.lin.cloud.disk.entity.pojo.Permission;
import com.lin.cloud.disk.entity.request.*;
import com.lin.cloud.disk.entity.request.department.*;
import com.lin.cloud.disk.entity.response.PermissionGroupListResponse;
import com.lin.cloud.disk.entity.response.UserInfoResponse;

import java.util.List;

/**
 * @program: blog
 * @description: 部门表服务接口类
 * @author: Lin
 * @create: 2020-12-10 22:13
 **/
public interface IDepartmentManageService {
    /**
     * 通过用户ID获取权限
     * @param userId
     * @return
     */
    List<Department> getDepartmentByUserId(Long userId);

    /**
     * 获取部门权限列表
     * @param request
     * @return
     */
    PermissionGroupListResponse getDepartmentPermissionList(GetDepartmentPermissionRequest request);


    /**
     * 创建公司部门
     * @param request
     */
    void createCompanyDepartment(CreateDepartmentRequest request);

    /**
     * 删除公司部门
     * @param request
     */
    void deleteCompanyDepartment(DeleteDepartmentRequest request);

    /**
     * 修改公司部门
     * @param request
     */
    void updateCompanyDepartment(UpdateDepartmentRequest request);


    /**
     * 获取部门内部用户
     * @param request
     * @return
     */
    List<UserInfoResponse> getDepartmentInnerUser(GetDepartmentUserRequest request);


    /**
     * 获取未分配部门的用户
     * @param accountRequestDTO
     * @return
     */
    List<UserInfoResponse> getUnAllocationDepartmentUser(AccountRequestDTO accountRequestDTO);

    /**
     * 分配/取消分配用户到指定部门
     * @param request
     */
    void allocationUserToDepartment(AllocationUserToDepartmentRequest request);
}
